#ifndef __RING_BUFFER_H
#define __RING_BUFFER_H

#include <stdint.h>
#include <stdbool.h>
#include <stddef.h>

#define BUFFER_SIZE (1024 * 1024) // 缓冲区大小

#ifdef __cplusplus
extern "C"
{
#endif

typedef struct
{
    char *data;   // 数据数组指针 读写公用，但是该变量是不可变的
    size_t front; // 读指针 仅读者使用
    size_t rear;  // 写指针 仅写者使用
    volatile size_t count; // 缓冲区中当前元素数量，读者和写者共用
} CircularBuffer;

typedef struct
{
    size_t len;
} DataHeader;



DataHeader writeData(CircularBuffer *buffer, void const *const data, size_t dataSize);



bool readData(CircularBuffer *buffer, void *data, DataHeader *header);

#ifdef __cplusplus
}
#endif

#endif